package cn.ycc1.boot3singleton.controller;

import cn.ycc1.boot3singleton.SingletonLazy;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author ycc
 * @date 2024/12/17
 */
@RestController
public class TestController {

    @GetMapping("/test")
    public String test() {
        System.out.println(getInstance());
        return "test";
    }
    private static SingletonLazy instance;
    public static SingletonLazy getInstance() {
        // 双重检查锁定 第一次检查实例是否存在，不存在则进入同步代码块
        if(instance == null) {
            synchronized (SingletonLazy.class) {
                // 第二次检查实例是否存在，防止多个线程同时进入同步代码块
                if(instance == null) {
                    instance = new SingletonLazy();
                }
            }
        }
        return instance;
    }
}
